﻿#ifndef COMMON_H__
#define COMMON_H__

#include "CErrorLogger.h"

#define PI    ((FLOAT)  3.141592654f)
#define TORADIAN( degree ) ((degree) * (PI / 180.0f))
#define TODEGREE( radian ) ((radian) * (180.0f / PI))

/*
File: Common.h

Leírás:
Néhány általánosan használt függvény tárháza.

Szerző:
SevN
*/

namespace Util
{

template<class T> void SAFE_RELEASE( T* ptr_in )
{
	if( ptr_in )
	{
		ptr_in->Release();
		ptr_in = 0;
	}
	else
	{
		LOG_INFO("Nem sikerült a Release");
	}
}

template<class T> void SAFE_DELETE( T* ptr_in )
{
	if( ptr_in )
	{
		delete ptr_in;
		ptr_in = NULL;
	}
}

inline bool fileExists( const std::string& fileName_in )
{
	char fileName[MAX_PATH];

	strcpy_s( fileName, fileName_in.c_str() );
	// létezik a fájl? - megpróbáljuk megnyitni
	FILE* filePtr = NULL;
	fopen_s( &filePtr, fileName, "rb" );
	if ( !filePtr )
	{		
		LOG_ERROR( fileName_in << " nem létezik");
		return false;
	}
	fclose( filePtr );
	return true;
}

inline float getRandom( float min_in, float max_in )
{
	//srand(0xF0);
	
	float aRand = (float)rand() / (RAND_MAX + 1.0f);
	return min_in + ( max_in - min_in ) * aRand;
}

inline std::wstring s2ws(const std::string& s)
{
	int len;
	int slength = (int)s.length() + 1;
	len = MultiByteToWideChar(CP_ACP, 0, s.c_str(), slength, 0, 0);
	wchar_t* buf = new wchar_t[len];
	MultiByteToWideChar(CP_ACP, 0, s.c_str(), slength, buf, len);
	std::wstring r(buf);
	delete[] buf;
	return r;
}


}
#endif